/*
 * GeneticAlgorithmParameters.h
 *
 *  Created on: Oct 21, 2013
 *      Author: filipe
 */

#ifndef GENETICALGORITHMPARAMETERS_H_
#define GENETICALGORITHMPARAMETERS_H_

namespace EvolutionaryOptimization
{
	class GeneticAlgorithmParameters
	{
		protected:

			int _Dimension;
			int _EliteSize;
			int _PopulationSize;
			double *_MaxPermittedValues;
			double *_MinPermittedValues;

			void _GenericConstructor(int elite_size, int population_size, int dimension);

		public:

			// TODO: create a constructor that receives Max and Min values!

			GeneticAlgorithmParameters(int dimension, int population_size);
			GeneticAlgorithmParameters(int dimension, int population_size, int elite_size);
			virtual ~GeneticAlgorithmParameters();

			int GetDimension() const;
			int GetEliteSize() const;
			int GetPopulationSize() const;
			double GetMaxValue(int dimesion) const;
			double GetMinValue(int dimesion) const;

			void SetDimension(int dimension);
			void SetEliteSize(int elite_size);
			void SetPopulationSize(int population_size);
			void SetMaxValue(int dimesion, double value);
			void SetMinValue(int dimesion, double value);
	};
}

#endif
